package com.yunke.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;

/**
 * 标签管理实体类
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("yunke_tag")
@Schema(name = "YunkeTag", description = "标签管理实体")
public class YunkeTag implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.ASSIGN_ID)
    @Schema(description = "标签ID")
    private Long id;

    @Schema(description = "标签名称")
    private String tagName;

    @Schema(description = "标签编码")
    private String tagCode;

    @Schema(description = "标签类型（1系统标签 2用户标签 3内容标签 4活动标签）")
    private Integer tagType;

    @Schema(description = "标签分类")
    private String tagCategory;

    @Schema(description = "标签颜色")
    private String tagColor;

    @Schema(description = "标签图标")
    private String tagIcon;

    @Schema(description = "标签描述")
    private String tagDesc;

    @Schema(description = "使用次数")
    private Integer useCount;

    @Schema(description = "热度权重")
    private Integer hotWeight;

    @Schema(description = "排序权重")
    private Integer sortWeight;

    @Schema(description = "是否热门（0否 1是）")
    private Boolean isHot;

    @Schema(description = "是否推荐（0否 1是）")
    private Boolean isRecommend;

    @Schema(description = "是否启用（0否 1是）")
    private Boolean isEnabled;

    @Schema(description = "创建用户ID")
    private Long createUserId;

    @Schema(description = "创建用户名")
    private String createUserName;

    @Schema(description = "扩展信息（JSON格式）")
    private String extraInfo;

    @Schema(description = "备注")
    private String remark;

    @Schema(description = "状态（0正常 1删除）")
    private Integer status;

    @Schema(description = "创建时间")
    private Long createTime;

    @Schema(description = "更新时间")
    private Long updateTime;
} 